package org.example.controller;

import org.apache.tomcat.websocket.PojoHolder;
import org.example.pojo.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.concurrent.TimeUnit;

@RestController
@RequestMapping("auth")
public class AuthController 
{

	/**
	 * 模拟手机验证码登录流程
	 */
	
	@Autowired
	RedisTemplate redisTemplate;
	
	//手机验证码登录
	@GetMapping("login")
	public Result login(@RequestParam String phone,@RequestParam String code) {

		//查redis的手机验证码
		String rCode = (String) redisTemplate.opsForValue().get("phone:" + phone);
		if (rCode == null)
		{
			return Result.error("请获取验证码");
		}
		
		//核实验证码
		if(!rCode.equals(code))
		{
			return Result.error("验证码错误");
		}
		
		//查询手机用户是否存在
		//如果存在就直接登录成功
		//如果不存在则创建一个用户
		//返回token
		
		return Result.ok("登录成功");
	}
	
	//发送验证码
	@GetMapping(value ="code")
	public Result<Integer> code(@RequestParam String phone)
	{
		//手机号数据校验
		if(phone == null || phone.equals(""))
		{
			return Result.error("手机号有误");
		}
		
		//查redis中有没有数据
		if(redisTemplate.opsForValue().get("phone:"+phone) != null)
		{
			return Result.error("已获取验证码，请稍后重试");	
		}
		
		int code = (int)(Math.random() * 9000) + 1000;//生成四位随机数
		//将验证码保存在redis中，30秒后过期
		redisTemplate.opsForValue().set("phone:"+phone,String.valueOf(code),30, TimeUnit.SECONDS);
		return Result.ok(code);
	}
}
